import storage from '@/assets/js/storage.js';

const KEY = 'search_info_history';
const LENGTH = 6; //'infinity';

/**
 * 获取全部历史信息
 */
export function getHistory() {
	var list = storage.getLocal(KEY);;
	
	if (!list) {
		list = [];
	}
	
	return list;
}

/**
 * 设置全部历史信息
 * @param {Array} list 要覆盖的全部历史信息
 */
export function setHistory(list) {
	storage.setLocal(KEY, list);
	
	return list;
}

/**
 * @param {Object} item 要存入的历史信息
 */
export function addHistory(item) {
	var list = getHistory(),
		index = list.findIndex(i => i === item);

	if (index > -1) {
		// 有重复的
		list.splice(index, 1);
	}
	
	if (
		LENGTH !== 'infinity' 
		&& list.length >= LENGTH
	) {
		list.pop();
	}
	
	list.unshift(item);
	
	setHistory(list);
	
	return list;
}

/**
 * 清空历史
 */
export function clearHistory() {
	storage.setLocal(KEY, []);
}

/**
 * 移除某个历史
 * @param {Object} key 要移除的 索引 或 内容
 */
export function removeHistory(key) {
	var list = getHistory();
	
	if (typeof key === 'number') {
		list.splice(key, 1);
		
		setHistory(list);
		
		return list;
	}
	
	var index = list.findIndex(item => item === key);
	
	if (index < 0) {
		return list;
	}
	
	list.splice(index, 1);
	
	setHistory(list);
	
	return list;
}

/**
 * 根据文字获取近似的记录
 * @param {String} text 匹配的字符串
 */
export function getHistoryLike(text) {
	var list = getHistory(),
		reg = new RegExp(text),
		res;

	res = list.filter(item => {
		return reg.test(item);
	});

	return res;
}